home *** CD-ROM | disk | FTP | other *** search
/ SGI Freeware 2002 November / SGI Freeware 2002 November - Disc 2.iso / dist / fw_glimpse.idb / usr / freeware / src / glimpse-3.0 / libtemplate / include / template.h.z / template.h
C/C++ Source or Header  |  1997-09-09  |  6KB  |  162 lines

  1. /*
  2.  *  template.h - SOIF template processing support
  3.  *
  4.  *  Darren Hardy, hardy@cs.colorado.edu, July 1994
  5.  *
  6.  *  $Id: template.h,v 1.8 1995/02/01 00:55:09 hardy Exp $
  7.  *
  8.  *  ----------------------------------------------------------------------
  9.  *  Copyright (c) 1994, 1995.  All rights reserved.
  10.  *  
  11.  *          Mic Bowman of Transarc Corporation.
  12.  *          Peter Danzig of the University of Southern California.
  13.  *          Darren R. Hardy of the University of Colorado at Boulder.
  14.  *          Udi Manber of the University of Arizona.
  15.  *          Michael F. Schwartz of the University of Colorado at Boulder. 
  16.  *  
  17.  *  This copyright notice applies to all code in Harvest other than
  18.  *  subsystems developed elsewhere, which contain other copyright notices
  19.  *  in their source text.
  20.  *  
  21.  *  The Harvest software was developed by the Internet Research Task
  22.  *  Force Research Group on Resource Discovery (IRTF-RD).  The Harvest
  23.  *  software may be used for academic, research, government, and internal
  24.  *  business purposes without charge.  If you wish to sell or distribute
  25.  *  the Harvest software to commercial clients or partners, you must
  26.  *  license the software.  See
  27.  *  http://harvest.cs.colorado.edu/harvest/copyright,licensing.html#licensing.
  28.  *  
  29.  *  The Harvest software is provided ``as is'', without express or
  30.  *  implied warranty, and with no support nor obligation to assist in its
  31.  *  use, correction, modification or enhancement.  We assume no liability
  32.  *  with respect to the infringement of copyrights, trade secrets, or any
  33.  *  patents, and are not responsible for consequential damages.  Proper
  34.  *  use of the Harvest software is entirely the responsibility of the user.
  35.  *  
  36.  *  For those who are using Harvest for non-commercial purposes, you may
  37.  *  make derivative works, subject to the following constraints:
  38.  *  
  39.  *  - You must include the above copyright notice and these accompanying 
  40.  *    paragraphs in all forms of derivative works, and any documentation 
  41.  *    and other materials related to such distribution and use acknowledge 
  42.  *    that the software was developed at the above institutions.
  43.  *  
  44.  *  - You must notify IRTF-RD regarding your distribution of the 
  45.  *    derivative work.
  46.  *  
  47.  *  - You must clearly notify users that your are distributing a modified 
  48.  *    version and not the original Harvest software.
  49.  *  
  50.  *  - Any derivative product is also subject to the restrictions of the 
  51.  *    copyright, including distribution and use limitations.
  52.  */
  53. #ifndef _TEMPLATE_H_
  54. #define _TEMPLATE_H_
  55.  
  56. #include <stdio.h>
  57. #include "config.h"
  58.  
  59. /* Attribute-Value pair */
  60. struct attr_value {
  61.     char *attribute;    /* Attribute string; '\0' terminated */
  62.     char *value;        /* Value data; not '\0' terminated */
  63.     size_t vsize;        /* # of bytes in the value data */
  64.     size_t offset;        /* Starting byte of the value data in input */
  65. };
  66. typedef struct attr_value AVPair;
  67.  
  68. /* List of Attribute-Value pairs */
  69. struct attr_value_list {
  70.     AVPair *data;
  71.     struct attr_value_list *next;
  72. };
  73. typedef struct attr_value_list AVList;
  74.  
  75. /* SOIF Template structure */
  76. struct template {
  77.     char *template_type;    /* type of template */
  78.     char *url;        /* URL for template */
  79.     AVList *list;        /* List of Attribute-Value pairs */
  80.     size_t offset;        /* Starting byte of the template; the @ */
  81.     size_t length;        /* # of bytes that the template covers */
  82. };
  83. typedef struct template Template;
  84.  
  85.  
  86. /* Common Attribute Tags */
  87. #define T_ABSTRACT    "Abstract"
  88. #define T_AUTHOR    "Author"
  89. #define T_FILESIZE    "File-Size"
  90. #define T_FULLTEXT    "Full-Text"
  91. #define T_GENERATION    "Generation-Time"
  92. #define T_GHOST        "Gatherer-Host"
  93. #define T_GNAME        "Gatherer-Name"
  94. #define T_GVERSION    "Gatherer-Version"
  95. #define T_KEYS        "Keywords"
  96. #define T_LMT        "Last-Modification-Time"
  97. #define T_MD5        "MD5"
  98. #define T_NESTED    "Nested-Filename"
  99. #define T_PARTTEXT    "Partial-Text"
  100. #define T_REFERENCE    "References"
  101. #define T_REFRESH    "Refresh-Rate"
  102. #define T_RELATED    "Related"
  103. #define T_TITLE        "Title"
  104. #define T_TTL        "Time-to-Live"
  105. #define T_TYPE        "Type"
  106. #define T_UPDATE    "Update-Time"
  107. #define T_URL        "URL"
  108.  
  109. /* Backwards compatibility */
  110. #define T_FILETYPE    T_TYPE
  111. #define T_TIMESTAMP    T_LMT
  112.  
  113. /* Common time_t numbers */
  114. #define HOUR    ((time_t) 60 * 60)
  115. #define DAY    ((time_t) HOUR * 24)
  116. #define WEEK    ((time_t) DAY * 7)
  117. #define MONTH    ((time_t) WEEK * 4)
  118. #define YEAR    ((time_t) MONTH * 12)
  119.  
  120. #ifndef _PARAMS
  121. #if defined(__STDC__) || defined(__cplusplus) || defined(__STRICT_ANSI__)
  122. #define _PARAMS(ARGS) ARGS
  123. #else /* Traditional C */     
  124. #define _PARAMS(ARGS) ()      
  125. #endif /* __STDC__ */              
  126. #endif /* _PARAMS */   
  127.  
  128. /* Templates */
  129. Template *create_template _PARAMS((char *, char *));
  130. Template *embed_template _PARAMS((Template *, Template *));
  131. void free_template _PARAMS((Template *));
  132.  
  133. /* Attribute-Value pairs */
  134. AVList *create_AVList _PARAMS((char *, char *, int));
  135. void add_AVList _PARAMS((AVList *, char *, char *, int));
  136. void FAST_add_AVList _PARAMS((AVList *, char *, char *, int));
  137. void append_AVList _PARAMS((AVList *, char *, char *, int));
  138. AVPair *extract_AVPair _PARAMS((AVList *, char *));
  139. AVList *merge_AVList _PARAMS((AVList *, AVList *));
  140. AVList *sort_AVList _PARAMS((AVList *));
  141. AVList *sink_embedded _PARAMS((AVList *));
  142. int exists_AVList _PARAMS((AVList *, char *));
  143. void free_AVPair _PARAMS((AVPair *));
  144. void free_AVList _PARAMS((AVList *));
  145.  
  146. /* Printing Templates */
  147. Buffer *init_print_template _PARAMS((FILE *));
  148. void print_template _PARAMS((Template *));
  149. void print_template_header _PARAMS((Template *));
  150. void print_template_body _PARAMS((Template *));
  151. void print_template_trailer _PARAMS((Template *));
  152. void finish_print_template _PARAMS(());
  153.  
  154. /* Parsing Templates */
  155. void init_parse_template_file _PARAMS((FILE *));
  156. void init_parse_template_string _PARAMS((char *, int));
  157. Template *parse_template _PARAMS(());
  158. void finish_parse_template _PARAMS(());
  159. int is_parse_end_of_input _PARAMS(());
  160.  
  161. #endif /* _TEMPLATE_H_ */
  162.